import os
import time
  
# 设备文件路径  
device_path = '/dev/hidraw0'
  
# 打开设备文件  
# try:  
fd = os.open(device_path, os.O_RDWR | os.O_NONBLOCK, 777)  # 只读模式，非阻塞
    
data = [0x55, 0xAA, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88,
        0x55, 0xAA, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x88]
data_b = bytes(data)

# 写数据
os.write(fd, data_b)


# 尝试读取数据  
while True:  
    try:
        time.sleep(0.001)
        res:bytes = os.read(fd, 64)  # 读取最多64个字节的数据  
        if res:  
            # print("Read data:", res)  
            # 在这里解析数据...  
            # bytes to int list
            res_list = list(res)
            # 转换成十六进制字符串
            res_hex = " ".join(["{:02X}".format(i) for i in res_list])
            # print(res_hex)
            print("Read data hex:", res_hex)
    except OSError as e:  
        # 非阻塞读可能会抛出 EAGAIN 或 EWOULDBLOCK 错误，表示没有数据可读  
        if e.errno not in (11, 35):  # EAGAIN = 11, EWOULDBLOCK = 35（在某些系统上可能不同）  
            raise  
